package net.neptech.service;

import net.neptech.model.appointment.Appointment;
import net.neptech.model.dto.AppointmentDTO;
import net.neptech.model.dto.PopQueueDTO;
import net.neptech.model.vo.AppointmentVo;
import net.neptech.model.vo.PatientAppVo;
import net.neptech.vm.ResponseResult;
import org.springframework.data.domain.Page;

import java.util.List;

public interface IAppointmentService {
    ResponseResult<Appointment> appointment(AppointmentDTO appointmentDTO);

    ResponseResult<Boolean> concelAppointment(AppointmentDTO appointmentDTO);

    ResponseResult<List<AppointmentVo>> getAppointmentList(Long userId);

    /**
     * 更新预约单状态byOrderId
     * @param orderId
     * @return
     */
    ResponseResult<Void> updateAppointmentStatus(Long orderId,Byte status);

    ResponseResult<Page<Appointment>> getPatientApp(AppointmentDTO appointmentDTO);

    ResponseResult<Void>  putSlotQueue(AppointmentDTO appointmentDTO);

    ResponseResult<List<AppointmentDTO>> getSlotQueue(Long staffId, Long clnicId);


    ResponseResult<Void> updatePatientAppStatus(PopQueueDTO popQueueDTO);

    ResponseResult<Void> callSlot(Long id);
}
